import { createSlice } from '@reduxjs/toolkit'
import { Login } from '@/api/user'

const initialState = {
  access_token: '', // 登录凭证
  refresh_token: '', // 刷新凭证
}
// 定义初始状态和 reducer
// 注意：这里的 name 字段是必须的，用于生成 action 的类型
// 同时，reducer 函数的第一个参数是当前的 state，第二个参数是 action
// 这里的 state 是一个不可变的对象，不能直接修改它，需要使用 immer 库来创建新的 state
const login = createSlice({
  name: 'login',
  initialState,
  reducers: {
    setAccessToken: (state, { payload }) => {
      state.access_token = payload
    },
    setRefreshToken: (state, { payload }) => {
      state.refresh_token = payload
    },
  },
})

export const { setAccessToken, setRefreshToken } = login.actions // 导出action函数
// 定义异步action
export const onLogin = (data: { name: any; password: any }) => {
  return async (dispatch: any) => {
    const res = await Login(data)
    console.log('🌺👉 异步啦==》', res, data)
    dispatch(setAccessToken(res.access_token)) // 保存登录凭证
    dispatch(setRefreshToken(res.refresh_token)) // 保存刷新凭证
    return res
  }
}

export default login.reducer // 导出 reducer 创建store
